package demo923;

import java.io.*;

public class demo1 {
    public static void main(String[] args) throws IOException {
        //拷贝一个文件夹，考虑子文件夹---拷贝文件夹，就相当于是复制，不能是只把里面的内容给拷贝出来。
        //使用字符输入流和字符输出流进行拷贝
        File file1=new File("D:\\ccc");//文件源
        File file2=new File("D:\\ddd");//目的地

        Print(file1,file2);

    }
    //写一个方法，遍历文件夹找文件去读取写入
    public static void Print(File file1,File file2) throws IOException {
        file2.mkdir();
        File[] arr=file1.listFiles();
        for(File i:arr){
            System.out.println(i);
            if(i.isFile()){
                //是文件--开始拷贝--文件的层级和文件名都要相同
                FileReader reader=new FileReader(i);
                FileWriter writer=new FileWriter(new File(file2,i.getName()));//输出流有个特点就是，该文件不存在就会创建一个。
                char[] chars=new char[2];//写入的文件名要与读出的文件名相同
                int len;
                while((len=reader.read(chars))!=-1){
                    writer.write(chars,0,len);
                }
                //关闭资源
                writer.close();
                reader.close();


            } else{
                //是文件夹--这时也要拷贝这个文件夹，拷贝到File2下，文件夹名，和读出的文件夹名一样,new File-->其实也就相当于一个字符串路径
                Print(i,new File(file2,i.getName()));//文件不存在输出流可以创建，但是文件夹File不能自己创建，手动创建一个多级文件夹

            }
        }
    }

}
